package acwing.周赛;
/**
 * @author： li
 * @date： 2022-03-13 14:25
 * @version 1.0
 */
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class 出现次数2 {
    static BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
    public static void main(String[] args) throws IOException {
//        Scanner sc =new Scanner(System.in);
//        String s,t;
//        int n,m,q;
//        n=sc.nextInt();m=sc.nextInt();
//        q=sc.nextInt();s = sc.next();
//        t = sc.next();
        String [] line = BR.readLine().split(" ");
        int n = Integer.parseInt(line[0]);
        int m = Integer.parseInt(line[1]);
        int q = Integer.parseInt(line[2]);

        String s = BR.readLine();

        String t = BR.readLine();
        int[] ss = new int[n];
        int from,to;
        for(int i=0;i<=n-m;i++){
            //先确定字符串t在s的所有起始位置在哪
            String S =s.substring(i,n);
            //相当于和s的子串S比较前缀 ，如果时从这开始就会返回子串S的第一个索引值就是0；
            //为什么时0 因为S是s的子串 S一直在缩短长度 在S中找t 每次t在S的第一次出现索引都会是0；
            if(S.indexOf(t)==0)
                ss[i]++;
        }
//        System.out.println(Arrays.toString(ss));
        while((q--)>0){
//            from=sc.nextInt();
//            to=sc.nextInt();
            line = BR.readLine().split(" ");
            from = Integer.parseInt(line[0]);
            to = Integer.parseInt(line[1]);
            int count=0;
            for(int i=from-1;i<=to-m;i++)
                if(ss[i]==1)
                    count++;
//            System.out.println(count);
            out.write(count+"\n");
        }
        BR.close();
        out.flush();
    }
}
